\chapter{Systementwurf Pfadgenerator}
\section{Geforderte Funktionen}
\subsection{Parkvorgang mit Trajektoriensteuerung}
Eine wichtige Anforderung an den Pfad des Parkvorgangs (Ein- sowie Ausparken) ist der realistische Bewegungsverlauf, den auch ein Auto so abfahren könnte. Eine Drehung auf der Stelle ist nicht gewünscht. 

Dafür bietet sich eine Trajektoriensteuerung an. Die Koeffizienten der x- und y-Parabeln lassen sich relativ einfach und in wenig Rechenzeit bestimmen, wenn man Bézier-Kurven zugrunde legt. 

\subsection{Parallele Endposition zur Fahrbahn}
Der Roboter soll möglichst parallel zur Fahrbahn geparkt werden. Dies ergibt sich wieder aus dem Vorbild des Autos im Straßenverkehr. Um dies zu erreichen, sollen Korrekturmanöver am Ende des Parkvorgangs durchgeführt werden.

\section{Mathematische Beschreibung}

Bézier-Kurven lassen sich berechnen, indem man die Endpunkte durch beliebig viele zusätzliche Punkte ergänzt und jeder Punkt als Vektor interpretiert wird. Der Grad des sich ergebenden Polynoms ist um 1 kleiner als die Anzahl der gegebenen Punkte. Für einen kubischen Bewegungsverlauf werden somit insgesamt 4 Punkte benötigt. Abbildung \ref{bez_3} und Abbildung \ref{bez_4} stellen den Verlauf für 3 und 4 gegebene Punkte dar.

\begin{figure}[H]
  %\centering
  \begin{minipage}[b]{8 cm}
    \includegraphics[width=0.95\textwidth]{Bilder/bez_3.png} 
    \caption{Bézierkurve mit 3 Punkten}
    \label{bez_3}
  \end{minipage}
  \begin{minipage}[b]{8 cm}
    \includegraphics[width=0.95\textwidth]{Bilder/bez_4.png}  
    \caption{Bézierkurve mit 4 Punkten}
    \label{bez_4}
  \end{minipage}
\end{figure}

Die Punkte werden miteinander verbunden und die Strecke in Abhängigkeit eines Parameters, hier t, durchlaufen. Die Punkte P, Q und X in Abbildung \ref{bez_3} werden wie folgt berechnet:
\begin{gather}
P = A + t(B - A), \quad 0\leq t \leq 1 \\
Q = B + t(C - B),\\
X = P + t(Q - P).
\end{gather}
Damit lässt sich durch Einsetzen die quadratische Bézier-Formel berechnen:
\begin{equation}
X(t) = (1-t)^2 * A + 2(1-t) * B + t^2 * C.
\end{equation}
Auf gleiche Weise erhält man bei einem weiteren Punkt die kubische Bézier-Formel nach Abbildung \ref{bez_4}
\begin{equation}
X(t) = (1-t)^3 * A + 3t(1-t)^2 * B + 3t^2(1-t) * C + t^3 * D.
\end{equation}
Diese Formel lässt sich durch Ausmultiplizieren und Umstellen in die Form 
\begin{equation}
X(t) = P + Q * t + R * t^2 + S * t^3
\end{equation}
bringen. Die Faktoren entsprechen nach einem Koeffizientenvergleich den Werten
\begin{gather}\label{koeff_P}
P = A, \\
Q = 3B - 3A,\\
R = 3C + 3A - 6B,\\
S = D - A - 3C + 3B.
\label{koeff_S}
\end{gather}
Da es sich bei den Punkten A bis D um Vektoren handelt, können die x- und y-Verläufe über den veränderlichen Parameter einfach durch Einsetzen der entsprechenden Koordinaten in die Koeffizientengleichungen berechnet werden. Da der Parameter von 0 bis 1 läuft, entspricht er dem Gesamtweg. 

Die Koeffizienten werden im Control-Modul so weiterverarbeitet, dass die korrekte Geschwindigkeit für jeden Motor zu jedem Zeitpunkt eingestellt werden kann.

Da Start- und Endpunkt für den Einparkvorgang je nach Position auf dem Parcours feststehen, müssen nur noch die beiden anderen Punkte festgelegt werden. Für einen sinnvollen Verlauf ergibt sich, dass die Strecke $\overline {AB}$ sowie $\overline{CD}$ parallel zur Fahrbahn verlaufen. Für einen rückwärtigen Einparkvorgang liegt B hinter A, und C vor D. Der Abstand kann durch 
\begin{equation}
\frac{Abstand (Start, Ende)}{2}
\end{equation}
angenähert werden. Der sich ungefähr ergebende Verlauf ist in Abbildung \ref{bez_verl} zu sehen.

\begin{figure}[H]
\centering
\includegraphics[width=0.4\textwidth]{Bilder/bez_erg.png}
\caption{Verlauf des Parkvorgangs nach Anforderungen}
\label{bez_verl}
\end{figure}

Die Berechnung der Koeffizienten ist unabhängig davon, ob der Startpunkt wirklich auf dem Parcours ist. Somit könnte die Berechnung jederzeit, auch abseits der Strecke durchgeführt werden.